File systems and disk arrays utilize two different methods for accessing data stored on a data storage medium. The two methods are distinguished by a number of characteristics. In a file system for example, files are accessed using a file abstraction. That is, data is represented by a file which may be opened, closed, created, deleted, read, and written. Data is managed in a file system through a hierarchy of files and directories. This hierarchical data management is commonly seen as a significant advantage over other data management schemes. File systems also support both data sharing and data storage device sharing. Security within data storage devices is based on file and directory level access control lists standardized as part of the file system protocols. Another advantage of file systems is that client/server compatibility is based on a small number of well-supported protocols. However, file system performance is reduced by data storage disk-resident file mapping arrangements which are required to map data for a file to physical or virtual locations of the storage media associated with a data storage device.
A disk array is a storage system that employs a number of separate storage devices or disks and manages data across all of the separate devices. These disk array storage systems are popular for implementing data storage redundancy schemes to guard against individual storage device failures. In contrast to a file system, data is accessed in a disk array using a block storage abstraction. That is, data is mapped to large contiguous storage spaces or logical units and is accessed as blocks contained in these logical units. Each block in a logical unit represents a certain amount of data storage space, commonly 512 bytes of storage space. The stored data in a disk array is managed as physical and virtual data storage devices represented by volumes and/or logical units. Although the block storage abstraction may improve the speed at which large amounts of data may be written and retrieved from the storage devices, there are a number of drawbacks associated with disk arrays as compared to file systems. One drawback is that client/server compatibility for disk arrays is subject to a variety of constraints that vary across clients and servers. Also, disk arrays support only device sharing but not data sharing. Furthermore, security within devices is based on vendor unique features.
FIG. 1 provides a diagrammatic representation of a prior art arrangement between a disk array system 100 and a file system 101. The arrangement includes an array of physical storage devices 102 which may be disk drives each connected for communication with an array controller 103. Array controller 103 is a processing device executing array control program processes to control devices 102 and manage the data stored across the devices. Array controller 103 communicates with a host computer 104 through a suitable communications arrangement as indicated by line 105. File system 101 is implemented through computer program processes executed by a processor at host computer 104. Although FIG. 1 shows the array controller as separate from the host computer, some prior art disk array systems combine the functions of the array controller and host processor in a single processing device dedicated to the disk array system. The cooperation between the disk array controller 103 and file system 101 is generally the same regardless of whether the array controller and file system processes are performed on a single processing device or separate processing devices.
In the prior art system 100 shown in FIG. 1, the file system and disk array controller processes can be thought of as two separate layers of processing which cooperate to provide access to the physical media included in storage devices 102. File system 101 is essentially interposed between the file system clients (not shown in FIG. 1) and disk array controller 103 which actually manages and controls access to devices 102. To read a file, for example, a file system client submits a read operation request to file system 101. This file system client comprises a program process which may be executed at host computer 104 or at a computer networked to the host computer. In any event, file system processes receive the request from the file system client and update the file system data management arrangement which stores the file name, usually various file attributes, and storage allocation information indicating where the data making up the file is stored. File system 101 then issues an appropriate instruction to disk array controller 103. Array controller 103 processes the instruction to read the requested file data from one or more storage devices 102. The data read from storage devices 102 is first cached in memory associated with array controller 103 and then directed to cache memory associated with file system 101. File system 101 then returns the requested data as directed by the read operation. This step of transferring data from disk array controller 103 to file system 101 before the data may be transferred to the file system imposes a performance penalty particularly where the file being accessed is a large file.